#pragma once
#include "EntityControl.h"
//#include "ControlContext.h"

class EntityControl;
class ControlContext;

class Controller
{
	public:
	struct Projectile
	{
		Ogre::String modelMeshName;
		Ogre::Vector3 velocity;
		Ogre::Vector3 position;
	};
	bool killed;
	bool GameOver;
	/////////DDDDDDDDDDIIIIIIIIIIIIIIIIIEEEEEEEEEEEEE
	bool readyToDie;
public:
	Controller(void);
	virtual ~Controller(void);

	void kill();
	void GameOverMan();
	bool isKilled();
	bool isGameOver();

	void DDDIIIE();
	bool isReadyToDie();

	virtual void apply(
		EntityControl* entity,
		const ControlContext& context)=0;

	virtual bool isSpawningNeeded()=0;
	virtual Projectile getNextSpawnItem()=0;
};

